1. Field of the Invention
The present invention relates generally to apparatus for reading binary coded information from a record element upon which such information has been encoded either by direct printing or in the form of a label affixed to the record element. More particularly, the invention relates to avoiding erroneous output signals when reading such information from a moving record element that is subject to reciprocative movement as it is advanced past a sensor.
2. Description of the Prior Art
Bar coding is a well-known technique for recording digital information by means of a module of parallel wide and narrow bars or spaces. In module-width encoding, data with a logic value of "0" is printed as a narrow element, and logic "1's" are printed as wide elements, typically two to three times the narrow element's width. This sequence of digits forms a binary word that corresponds to a character defined by the bar code used. Depending on the code, binary data may be represented by both bars and spaces or by bars only.
To read the number encoded by the array, the record element on which the array is carried can be moved at a uniform known velocity past an optical sensor which provides a positive signal at each transition between the trailing edge of a space and the leading edge of a bar and a negative signal at each transition between the trailing edge of a bar and the leading edge of a space. By timing the interval between successive positive and negative signals, the wide and narrow bars can be identified and the coded number can be decoded. Also, the decoder can be designed to identify as spurious those signals that are not related in a time frame corresponding to the bar code. For example, a positive and negative signal occur within a much shorter interval then would correspond to a narrow bar, these signals are assumed to be caused by a noise spike or other anomaly and are rejected.
In many applications, it is not practical to advance a bar code array past the sensor continuously and at a known constant velocity. For example, many applications require the record bearing element to be advanced intermittently for reasons unrelated to reading the bar code. Often this requirement is best met by using a stepper motor to advance the record element, which potentially gives rise to two sources of erroneous decoding.
First, when a stepper motor is energized, its shaft rotates to the new position as fast as the magnetic field can effectively overcome the frictional and inertial load of the system. This varies from step to step, from load to load and as a function of the angular increment of rotation. If the motor steps, translated to movement of the record element, are significantly greater than the width of a narrow code bar, it is possible that the narrow bar will be traversed during the maximum velocity of the record element. The resulting transition pulses will then occur so rapidly that the decoding circuitry may interpret those pulses as an extraneous noise spike that is to be disregarded. Conversely, if a narrow bar transition occurs just after the motor energization, i.e. during the initial relatively slow movement of the record element, the time delay before the occurrence of the trailing edge bar transition may cause that narrow bar to be erroneously interpreted as a wide bar.
Secondly, each time the stepper motor is actuated it tends to overshoot slightly its desired terminal position and then to oscillate about that position before it comes to rest. If this reverse movement is significant in relation to the width of a coding bar, the corresponding reverse movement of the record element can cause the same transition to be sensed more than once by the sensor thus resulting in another form of coding error. This phenomenon is further exasperated by the fact that the oscillation of the record element may cause it to momentarily buckle because of its inability to accelerate instantaneously, thus causing another source of multiple transitions at the sensor.
One means for reducing the decoding errors attributable to varying velocities of the record element, is to provide the bar code with a separate timing track which is sensed by a second sensor to identify the regions or cells of the bar code array in which each wide or narrow bar will occur. This insures that only one positive and negative pulse will be sensed within each coding cell and the interval between the corresponding transitions can be timed by reference to the width of the cell to distinguish wide and narrow bars. Alternatively, the cells can be identified by positively driving the record element, e.g. by means of sprocket holes along the edge thereof, so that the particular cell in scanning position is positively related to the angular position of the stepper motor. While such arrangements tend to reduce the velocity variation problems, they do not, per se, overcome the problem of reciprocative movement of the record bearing element. U.S. Pat. No. 3,761,684 addresses this problem by means of a circuit that processes the sprocket control signals in an apparatus in which the record bearing element is advanced one code bar at a time by a stepper motor. The signal processor is designed to allow only one set of positive and negative signal transitions for each advance command of the stepping motor, thereby preventing the recognition of erroneous signals. Presumably, a similar arrangement could be employed deriving its signal from a timing track, but, in either event, secondary means such as the timing track or sprocket holes must be provided in accurate relation to the bar code. In many cases such secondary means are undesirable or totally impractical, particularly when the bar code is made as small as possible, thus dictating correspondingly narrow cells. Also, while such an approach eliminates normally encountered errors due to multiple transition scanning, it doesn't completely address the velocity error problem because the characteristics of a stepper motor cause the velocity of the record bearing element to vary during each cell to cell movement as previously described.